package com.lgcns.andteam2.todaymenu.info;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import com.lgcns.andteam2.todaymenu.Util;

import android.content.Context;


public class WeekInfo {
    private String startDate;
    private String endDate;
    private String startDateText;
    private String endDateText;
    private String weekText;
    
    private WeekInfo() {
    }
    
    /**
     * 주간 메뉴를 조회하기 위한 날짜 정보를 얻는다.
     * @return
     */
    public static WeekInfo getWeekInfo(Context context) {
        WeekInfo weekInfo = new WeekInfo();
        weekInfo.refresh(context);
        return weekInfo;
    }
    
    /**
     * 주간 메뉴를 조회하기 위한 날짜 정보를 다시 계산한다.
     * @param context
     */
    public void refresh(Context context) {
        TodayInfo todayInfo = TodayInfo.getTodayInfo(context);
        Calendar menuDate = Util.parseCalendar(todayInfo.getDate());
        int dayOfWeek = menuDate.get(Calendar.DAY_OF_WEEK);
        if(dayOfWeek > Calendar.MONDAY) {
            menuDate.add(Calendar.DATE, 2 - dayOfWeek);
        }
        
        startDate = Util.dfYyyymmdd.format(menuDate.getTime());
        SimpleDateFormat df = new SimpleDateFormat("M.d");
        startDateText = df.format(menuDate.getTime());

        menuDate.add(Calendar.DATE, 4);
        endDate = Util.dfYyyymmdd.format(menuDate.getTime());
        endDateText = df.format(menuDate.getTime());
        
        weekText = startDateText + "~" + endDateText;
    }

    /**
     * 주간정보의 시작일자를 M.d 형식으로 반환한다.
     * @return
     */
    public String getStartDateText() {
        return startDateText;
    }

    /**
     * 주간정보의 종료일자를 M.d 형식으로 반환한다.
     * @return
     */
    public String getEndDateText() {
        return endDateText;
    }

    /**
     * 주간정보의 시작일자를 yyyyMMdd 형식으로 반환한다.
     * @return
     */
    public String getStartDate() {
        return startDate;
    }

    /**
     * 주간정보의 종료일자를 yyyyMMdd 형식으로 반환한다.
     * @return
     */
    public String getEndDate() {
        return endDate;
    }

    /**
     * M.d~d 형식의 문자열을 반환한다.
     * @return
     */
    public String getWeekText() {
        return weekText;
    }
    
    
}
